Java Technologies Collection (List, Set) এবং Array Mapping এর ধারণা গাইড ও নোট

256

MapStruct হল একটি annotation processor ভিত্তিক টুল যা JavaBeans (POJOs) বা ডোমেইন অবজেক্টগুলির মধ্যে ম্যাপিং সম্পন্ন করার জন্য ব্যবহৃত হয়। এর মাধ্যমে, আপনি সহজে এবং দ্রুত Collection (List, Set) এবং Array Mapping করতে পারেন। MapStruct ডেটার এক ধরনের সংগ্রহ বা আয়োজন থেকে অন্য ধরনের সংগ্রহে ম্যাপিং করার জন্য খুবই কার্যকরী এবং নির্ভরযোগ্য।

এই টিউটোরিয়ালে, আমরা দেখব কীভাবে MapStruct ব্যবহার করে Collection এবং Array ম্যাপিং করা যায়।


১. Collection (List, Set) Mapping এর ধারণা

MapStruct Collection (List, Set) ম্যাপিং এর জন্য অটোমেটিক সমাধান প্রদান করে। যখন আপনি একটি List বা Set অবজেক্টের মধ্যে ম্যাপিং করতে চান, তখন MapStruct প্রতিটি উপাদানকে এক ক্লাস থেকে অন্য ক্লাসে ম্যাপ করবে। এতে আপনাকে প্রতিটি উপাদানকে ম্যাপ করার জন্য আলাদাভাবে কোড লেখার প্রয়োজন হয় না। MapStruct এটি স্বয়ংক্রিয়ভাবে পরিচালনা করে।

১.১ List Mapping Example

ধরা যাক, আমাদের একটি Employee ক্লাস এবং EmployeeDTO ক্লাস রয়েছে, এবং আমরা List থেকে List এ ডেটা ম্যাপ করতে চাই।

Employee.java:

public class Employee {
    private String name;
    private String department;
    
    // Getters and Setters
}

EmployeeDTO.java:

public class EmployeeDTO {
    private String name;
    private String department;
    
    // Getters and Setters
}

EmployeeMapper.java (Mapper Interface):

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;

@Mapper
public interface EmployeeMapper {
    EmployeeMapper INSTANCE = Mappers.getMapper(EmployeeMapper.class);

    List<EmployeeDTO> employeesToEmployeeDTOs(List<Employee> employees);
}

এখানে, employeesToEmployeeDTOs মেথডটি List থেকে List এ ডেটা ম্যাপ করবে।

১.২ Set Mapping Example

এছাড়াও Set এর মধ্যে ম্যাপিং করার জন্য MapStruct একইভাবে কাজ করে। যদি আপনি Set থেকে Set ম্যাপ করতে চান, তাহলে এর জন্য কোনো আলাদা কোড লেখা দরকার নেই। একই ম্যাপার ইন্টারফেস ব্যবহার করা যাবে।

EmployeeMapper.java (Set Mapping):

import java.util.Set;

@Mapper
public interface EmployeeMapper {
    EmployeeMapper INSTANCE = Mappers.getMapper(EmployeeMapper.class);

    Set<EmployeeDTO> employeesToEmployeeDTOs(Set<Employee> employees);
}

এখানে, employeesToEmployeeDTOs মেথডটি Set থেকে Set এ ডেটা ম্যাপ করবে।


২. Array Mapping এর ধারণা

MapStruct ব্যবহার করে আপনি Array ম্যাপিংও করতে পারেন। এটি List বা Set এর মতই কাজ করে, যেখানে প্রতিটি উপাদানকে এক টাইপ থেকে অন্য টাইপে ম্যাপ করা হয়।

২.১ Array Mapping Example

ধরা যাক, আমাদের Employee এবং EmployeeDTO ক্লাসের একটি অ্যারে রয়েছে এবং আমরা এই অ্যারের মধ্যে ম্যাপিং করতে চাই।

Employee.java:

public class Employee {
    private String name;
    private String department;

    // Getters and Setters
}

EmployeeDTO.java:

public class EmployeeDTO {
    private String name;
    private String department;

    // Getters and Setters
}

EmployeeMapper.java (Array Mapping):

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper
public interface EmployeeMapper {
    EmployeeMapper INSTANCE = Mappers.getMapper(EmployeeMapper.class);

    EmployeeDTO[] employeesToEmployeeDTOs(Employee[] employees);
}

এখানে, employeesToEmployeeDTOs মেথডটি Employee[] থেকে EmployeeDTO[] এ ডেটা ম্যাপ করবে।


৩. Collection এবং Array Mapping এর মধ্যে পার্থক্য

  1. List/Set: এগুলি Java Collection Framework এর অংশ এবং ডাইনামিক আকারে ডেটা ধারণ করতে সক্ষম।
  2. Array: Arrays একধরনের স্থির ডেটা সংগ্রহ যা নির্দিষ্ট আকারের থাকে এবং পারফরম্যান্সের জন্য অনেক দ্রুত।

যদিও List, Set, এবং Array সবগুলোই ম্যাপিংয়ের জন্য ব্যবহার করা যেতে পারে, তবে Arrays সাধারণত কমপ্লেক্স ডেটা স্ট্রাকচারের তুলনায় অনেক দ্রুত এবং কম মেমরি ব্যবহার করে।


৪. Advanced Mapping with Collection and Array

৪.১ Using MapStruct for Nested Collection Mapping

MapStruct আপনি Nested Collection ম্যাপিংও সহজেই করতে পারবেন। ধরুন আপনার একটি Employee ক্লাস রয়েছে, যেখানে Address (অন্য ক্লাস) রয়েছে, এবং আপনি List এর মধ্যে List ম্যাপ করতে চান, এটি MapStruct দ্বারা খুব সহজেই সম্পন্ন করা যায়।

Employee.java:

public class Employee {
    private String name;
    private Address address;

    // Getters and Setters
}

Address.java:

public class Address {
    private String street;
    private String city;

    // Getters and Setters
}

EmployeeDTO.java:

public class EmployeeDTO {
    private String name;
    private AddressDTO address;

    // Getters and Setters
}

AddressDTO.java:

public class AddressDTO {
    private String street;
    private String city;

    // Getters and Setters
}

EmployeeMapper.java (Nested Collection Mapping):

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;

@Mapper
public interface EmployeeMapper {
    EmployeeMapper INSTANCE = Mappers.getMapper(EmployeeMapper.class);

    List<EmployeeDTO> employeesToEmployeeDTOs(List<Employee> employees);
    
    AddressDTO addressToAddressDTO(Address address);
}

এখানে, EmployeeMapper ইন্টারফেসে List থেকে List ম্যাপ করার সময় Address অবজেক্টও স্বয়ংক্রিয়ভাবে AddressDTO তে ম্যাপ হবে।


৫. MapStruct এবং Collection/Array Mapping এর পারফরম্যান্স

MapStruct compile-time কোড জেনারেট করে, তাই এটি Collection বা Array ম্যাপিংয়ের জন্য দ্রুত এবং পারফরম্যান্সে কোনো সমস্যা সৃষ্টি করে না। এটি List, Set, এবং Array ম্যাপিংয়ের জন্য no reflection ব্যবহার করে, ফলে এটি দ্রুততর এবং অধিক কার্যকরী।


সারাংশ

MapStruct আপনাকে Collection (List, Set) এবং Array ম্যাপিং এর জন্য খুবই সহজ এবং কার্যকরী সমাধান প্রদান করে। এটি List থেকে List বা Employee[] থেকে EmployeeDTO[] এর মতো ম্যাপিং করতে পারে। Nested Object Mapping এবং Custom Collection Mapping এর জন্য MapStruct অত্যন্ত কার্যকরী এবং টাইপ সেফ মডেল ম্যাপিং প্রক্রিয়া নিশ্চিত করে। MapStruct আপনাকে ডেটা ট্রান্সফার অবজেক্টের মধ্যে ডেটা স্থানান্তর করতে সাহায্য করে, এবং কোড জেনারেট করার মাধ্যমে পারফরম্যান্সে কোনো ক্ষতি ছাড়াই ম্যাপিং প্রক্রিয়াকে দ্রুততর এবং কার্যকরী করে তোলে।


Content added By
Promotion

Are you sure to start over?

Loading...